#ifndef __TRAIN_TRANS__
#define __TRAIN_TRANS__

typedef struct train_s {
  int length;
  char data[4096];
} train_t;

int recvn(const int fd, void *buf, int length);

// TODO: 不保证完全正确，需要自行验证
/// summary: 发送一个train
/// param:
///   fd: 与对端通信所使用的文件描述符，即send的第一个参数
///   data: 要发送的数据的首地址
///   length: 要发送的数据的长度
/// return: 成功返回0，错误返回-1
int train_send(const int fd, const void *data, int length);

// TODO: 不保证完全正确，需要自行验证
/// summary: 接收一个train,
/// 使用时传入用于通信的fd，并将一个train的地址传入，数据将保存在传入的trian中
/// param:
///   fd: 与对端通信所使用的文件描述符，即recv的第一个参数
///   train: 接收的train的地址
/// return: 成功返回0，错误返回-1
int train_recv(const int fd, void *data, const int max_length);

#endif // !__TRAIN_TRANS__
